import jwt from 'jsonwebtoken';

// 模拟用户数据库
const users = [
  {
    id: '1',
    username: 'admin',
    password: '123456', // 实际应用中应该使用加密密码
    avatar: ''
  }
];

// 登录控制器
export const login = (req, res) => {
  const { username, password } = req.body;

  // 查找用户
  const user = users.find(u => u.username === username && u.password === password);

  if (!user) {
    return res.status(401).json({
      success: false,
      message: '用户名或密码错误'
    });
  }

  // 生成JWT token
  const token = jwt.sign(
    { id: user.id, username: user.username },
    'your-secret-key', // 在实际应用中应该使用环境变量
    { expiresIn: '24h' }
  );

  // 返回用户信息和token
  res.json({
    success: true,
    token,
    user: {
      id: user.id,
      username: user.username,
      avatar: user.avatar
    }
  });
};

// 注册控制器
export const register = (req, res) => {
  const { username, password } = req.body;

  // 检查用户是否已存在
  if (users.some(u => u.username === username)) {
    return res.status(400).json({
      success: false,
      message: '用户名已存在'
    });
  }

  // 创建新用户
  const newUser = {
    id: String(users.length + 1),
    username,
    password,
    avatar: ''
  };

  users.push(newUser);

  // 生成JWT token
  const token = jwt.sign(
    { id: newUser.id, username: newUser.username },
    'your-secret-key', // 在实际应用中应该使用环境变量
    { expiresIn: '24h' }
  );

  // 返回用户信息和token
  res.status(201).json({
    success: true,
    token,
    user: {
      id: newUser.id,
      username: newUser.username,
      avatar: newUser.avatar
    }
  });
};

// 头像上传控制器
export const uploadAvatar = (req, res) => {
  try {
    if (!req.file) {
      return res.status(400).json({
        success: false,
        message: '没有上传文件'
      });
    }

    // 获取文件URL
    const fileUrl = `/api/uploads/avatars/${req.file.filename}`;

    // 在实际应用中，这里应该更新用户的头像URL
    // 由于我们使用的是内存数据库，这里就简单返回URL
    res.json({
      success: true,
      url: fileUrl
    });
  } catch (error) {
    console.error('头像上传失败:', error);
    res.status(500).json({
      success: false,
      message: '头像上传失败'
    });
  }
}; 